/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Codigo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author kyerte
 */
public class ConsultaDatosFinancieros {

    private Connection conexion = null;
    private PreparedStatement consultarDatosFinancieros = null;
    private PreparedStatement insertarNuevosDatosFinancieros = null;
    private PreparedStatement actualizarDatosFinancieros = null;
    private PreparedStatement eliminarDatosFinancieros = null;
    private PreparedStatement obtenerIdDatosFinancieros = null;
    private PreparedStatement obtenerDatosFinancierosNombre = null;
    private PreparedStatement obtenerDatosFinancierosCelular = null;
    private PreparedStatement obtenerDatosFinancierosEMail = null;

    public ConsultaDatosFinancieros() {

        conexion = FrmPrincipal.conexion;

        try {

            consultarDatosFinancieros = conexion.prepareStatement("SELECT * FROM DatosFinancieros");
            insertarNuevosDatosFinancieros = conexion.prepareStatement("INSERT INTO "
                    + "DatosFinancieros(idcliente,Banco,NSS,FOVISSTE,Presupuesto,Alcance) "
                    + "VALUES(?,?,?,?,?,?)");
            actualizarDatosFinancieros = conexion.prepareStatement("UPDATE DatosFinancieros"
                    + " SET idcliente=?, Banco=?, NSS=?, FOVISSTE=?, Presupuesto=?,"
                    + " Alcance=? WHERE "
                    + "idDatosFinancieros=?");
            eliminarDatosFinancieros = conexion.prepareStatement("DELETE FROM DatosFinancieros"
                    + " WHERE idDatosFinancieros=?");
            obtenerIdDatosFinancieros = conexion.prepareStatement("SELECT idDatosFinancieros "
                    + "FROM DatosFinancieros WHERE idcliente=?");
            obtenerDatosFinancierosCelular = conexion.prepareStatement("SELECT "
                    + "DatosFinancieros.idDatosFinancieros, "
                    + "DatosFinancieros.idcliente, DatosFinancieros.Banco, "
                    + "DatosFinancieros.NSS, DatosFinancieros.FOVISSTE, "
                    + "DatosFinancieros.Presupuesto, DatosFinancieros.Alcance FROM DatosFinancieros "
                    + "JOIN Clientes WHERE DatosFinancieros.idcliente = Clientes.idCliente "
                    + "AND Clientes.TelCelular = ?");
            obtenerDatosFinancierosNombre = conexion.prepareStatement("SELECT "
                    + "DatosFinancieros.idDatosFinancieros, "
                    + "DatosFinancieros.idcliente, DatosFinancieros.Banco, "
                    + "DatosFinancieros.NSS, DatosFinancieros.FOVISSTE, "
                    + "DatosFinancieros.Presupuesto, DatosFinancieros.Alcance FROM DatosFinancieros "
                    + "JOIN Clientes WHERE DatosFinancieros.idcliente = Clientes.idCliente "
                    + "AND Clientes.Nombre = ?");
            obtenerDatosFinancierosEMail = conexion.prepareStatement("SELECT "
                    + "DatosFinancieros.idDatosFinancieros, "
                    + "DatosFinancieros.idcliente, DatosFinancieros.Banco, "
                    + "DatosFinancieros.NSS, DatosFinancieros.FOVISSTE, "
                    + "DatosFinancieros.Presupuesto, DatosFinancieros.Alcance FROM DatosFinancieros "
                    + "JOIN Clientes WHERE DatosFinancieros.idcliente = Clientes.idCliente "
                    + "AND Clientes.EMail = ?");

        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }
    }

    public int agregaDatosFinancieros(int idCliente, String numBanco, String noSeguro,
            String noFov, double presupuesto, double alcance) {

        int resultado = 0;

        try {

            insertarNuevosDatosFinancieros.setInt(1, idCliente);
            insertarNuevosDatosFinancieros.setString(2, numBanco);
            insertarNuevosDatosFinancieros.setString(3, noSeguro);
            insertarNuevosDatosFinancieros.setString(4, noFov);
            insertarNuevosDatosFinancieros.setDouble(5, presupuesto);
            insertarNuevosDatosFinancieros.setDouble(6, alcance);

            resultado = insertarNuevosDatosFinancieros.executeUpdate();

        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    public int actualizaDatosFinancieros(int idCliente, String numBanco, String noSeguro,
            String noFov, double presupuesto, double alcance, int idDatosFinancieros) {

        int resultado = 0;

        try {

            actualizarDatosFinancieros.setInt(1, idCliente);
            actualizarDatosFinancieros.setString(2, numBanco);
            actualizarDatosFinancieros.setString(3, noSeguro);
            actualizarDatosFinancieros.setString(4, noFov);
            actualizarDatosFinancieros.setDouble(5, presupuesto);
            actualizarDatosFinancieros.setDouble(6, alcance);
            actualizarDatosFinancieros.setInt(7, idDatosFinancieros);

            resultado = actualizarDatosFinancieros.executeUpdate();

        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;

    }

    public int obtenerIdDatosFinancieros(int idCliente) {

        int id = 0;
        ResultSet conjuntoResultados = null;

        try {

            obtenerIdDatosFinancieros.setInt(1, idCliente);
            System.out.println(obtenerIdDatosFinancieros.toString());
            conjuntoResultados = obtenerIdDatosFinancieros.executeQuery();

            while (conjuntoResultados.next()) {
                id = conjuntoResultados.getInt(1);
            }

        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return id;
    }

    public List<DatosFinancieros> obtenerTodosDatosFinancieros() {

        List<DatosFinancieros> resultados = null;
        ResultSet conjuntoResultados = null;

        try {

            conjuntoResultados = consultarDatosFinancieros.executeQuery();
            resultados = new ArrayList();

            while (conjuntoResultados.next()) {

                resultados.add(new DatosFinancieros(conjuntoResultados.getInt("idDatosFinancieros"),
                        conjuntoResultados.getInt("idcliente"),
                        conjuntoResultados.getString("Banco"),
                        conjuntoResultados.getString("NSS"),
                        conjuntoResultados.getString("FOVISSTE"),
                        conjuntoResultados.getDouble("Presupuesto"),
                        conjuntoResultados.getDouble("Alcance")));

            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {

            try {

                conjuntoResultados.close();

            } catch (SQLException ex) {
                ex.printStackTrace();
                close();
            }
        }

        return resultados;
    }

    public int eliminarDatosFinancieros(int id) {

        int resultado = 0;

        try {

            eliminarDatosFinancieros.setInt(1, id);
            resultado = eliminarDatosFinancieros.executeUpdate();

        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    public List<DatosFinancieros> obtenerDatosFinancierosNombre(String nombre) {

        List<DatosFinancieros> resultados = null;
        ResultSet conjuntoResultados = null;

        try {

            obtenerDatosFinancierosNombre.setString(1, nombre);
            conjuntoResultados = obtenerDatosFinancierosNombre.executeQuery();
            resultados = new ArrayList();

            while (conjuntoResultados.next()) {

                resultados.add(new DatosFinancieros(conjuntoResultados.getInt("idDatosFinancieros"),
                        conjuntoResultados.getInt("idcliente"),
                        conjuntoResultados.getString("Banco"),
                        conjuntoResultados.getString("NSS"),
                        conjuntoResultados.getString("FOVISSTE"),
                        conjuntoResultados.getDouble("Presupuesto"),
                        conjuntoResultados.getDouble("Alcance")));

            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {

            try {

                conjuntoResultados.close();

            } catch (SQLException ex) {
                ex.printStackTrace();
                close();
            }
        }

        return resultados;
    }

    public List<DatosFinancieros> obtenerDatosFinancierosCelular(String celular) {

        List<DatosFinancieros> resultados = null;
        ResultSet conjuntoResultados = null;

        try {

            obtenerDatosFinancierosCelular.setString(1, celular);
            conjuntoResultados = obtenerDatosFinancierosCelular.executeQuery();
            resultados = new ArrayList();

            while (conjuntoResultados.next()) {

                resultados.add(new DatosFinancieros(conjuntoResultados.getInt("idDatosFinancieros"),
                        conjuntoResultados.getInt("idcliente"),
                        conjuntoResultados.getString("Banco"),
                        conjuntoResultados.getString("NSS"),
                        conjuntoResultados.getString("FOVISSTE"),
                        conjuntoResultados.getDouble("Presupuesto"),
                        conjuntoResultados.getDouble("Alcance")));

            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {

            try {

                conjuntoResultados.close();

            } catch (SQLException ex) {
                ex.printStackTrace();
                close();
            }
        }

        return resultados;
    }

    public List<DatosFinancieros> obtenerDatosFinancierosEMail(String correo) {

        List<DatosFinancieros> resultados = null;
        ResultSet conjuntoResultados = null;

        try {

            obtenerDatosFinancierosEMail.setString(1, correo);
            conjuntoResultados = obtenerDatosFinancierosEMail.executeQuery();
            resultados = new ArrayList();

            while (conjuntoResultados.next()) {

                resultados.add(new DatosFinancieros(conjuntoResultados.getInt("idDatosFinancieros"),
                        conjuntoResultados.getInt("idcliente"),
                        conjuntoResultados.getString("Banco"),
                        conjuntoResultados.getString("NSS"),
                        conjuntoResultados.getString("FOVISSTE"),
                        conjuntoResultados.getDouble("Presupuesto"),
                        conjuntoResultados.getDouble("Alcance")));

            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {

            try {

                conjuntoResultados.close();

            } catch (SQLException ex) {
                ex.printStackTrace();
                close();
            }
        }

        return resultados;
    }

    private void close() {
        try {
            conexion.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}
